package per.example.arpproject.utils;

import javax.servlet.http.HttpSession;
import java.io.File;

/**
 * 路径工具类
 * @author whx
 *
 */
public class PathUtil {

	  private static String webRootPath;
	  private static String rootClassPath;

	  public static String getPath(Class clazz)
	  {
	    String path = clazz.getResource("").getPath();
	    return new File(path).getAbsolutePath();
	  }

	  public static String getPath(Object object) {
	    String path = object.getClass().getResource("").getPath();
	    return new File(path).getAbsolutePath();
	  }

	  public static String getRootClassPath() {
	    if (rootClassPath == null) {
	      try {
	        String path = PathUtil.class.getClassLoader().getResource("").toURI().getPath();
	        rootClassPath = new File(path).getAbsolutePath();
	      }
	      catch (Exception e) {
	        String path = PathUtil.class.getClassLoader().getResource("").getPath();
	        rootClassPath = new File(path).getAbsolutePath();
	      }
	    }
	    return rootClassPath;
	  }

	  public void setRootClassPath(String rootClassPath) {
		  PathUtil.rootClassPath = rootClassPath;
	  }

	  public static String getPackagePath(Object object) {
	    Package p = object.getClass().getPackage();
	    return ((p != null) ? p.getName().replaceAll("\\.", "/") : "");
	  }

	  public static File getFileFromJar(String file) {
	    throw new RuntimeException("Not finish. Do not use this method.");
	  }

	  /**
	   * 返回项目运行时的绝对路径(webroot)
	   * 2016年5月25日上午10:37:24
	   * @param session
	   * @return
	   * @author Administrator
	   */
	public static String getWebRootPath(HttpSession session) {
		if (webRootPath == null) {
			webRootPath = detectWebRootPath(session);
		}
		return webRootPath;
	}

	  public static void setWebRootPath(String webRootPath) {
	    if (webRootPath == null) {
	      return;
	    }
	    if (webRootPath.endsWith(File.separator)){
	      webRootPath = webRootPath.substring(0, webRootPath.length() - 1);
	    }
	    PathUtil.webRootPath = webRootPath;
	  }

	  private static String detectWebRootPath(HttpSession session) {
	    try {
	    	return session.getServletContext().getRealPath("");
	    } catch (Exception e) {
	      throw new RuntimeException(e);
	    }
	  }

}
